package cn.lovecyy.mockjson.core.gen;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;

import java.math.BigDecimal;

/**
 * MockRandomUtils
 *
 * @author Yakir
 */
public class MockRandomUtils {

	// 支持 enum|本科,硕士,博士
	public static Object randomFromEnum(String[] enums) {
		return enums[RandomUtil.randomInt(enums.length)];
	}

	// 支持 dict|汉族,回族,藏族
	public static Object randomFromDict(String[] args) {
		String[] dicts = args[0].split(",");
		return dicts[RandomUtil.randomInt(dicts.length)];
	}

	// 支持 int|100-200
	public static Object randomIntRange(String params) {
		if (StrUtil.isEmpty(params)) {
			return RandomUtil.randomInt(0, 100);
		}
		if (params.contains("-")) {
			String[] range = params.split("-");
			int min = Integer.parseInt(range[0]);
			int max = Integer.parseInt(range[1]);
			return RandomUtil.randomInt(min, max + 1);
		}
		else {
			return RandomUtil.randomInt(Integer.parseInt(params) + 1);
		}

	}

	// 支持 string|5-10
	public static Object randomStringRange(String params) {
		if (StrUtil.isEmpty(params)) {
			return RandomUtil.randomString(8);
		}
		if (params.contains("-")) {
			String[] range = params.split("-");
			int min = Integer.parseInt(range[0]);
			int max = Integer.parseInt(range[1]);
			return RandomUtil.randomString(RandomUtil.randomInt(min, max));
		}
		else {
			return RandomUtil.randomString(Integer.parseInt(params));
		}
	}

	public static String repeatString(String params, Integer count) {
		if (StrUtil.isEmpty(params)) {
			return "";
		}
		return StrUtil.repeat(params, count);
	}

	public static BigDecimal randomBigDecimalRange(String params) {
		if (StrUtil.isEmpty(params)) {
			return RandomUtil.randomBigDecimal(BigDecimal.valueOf(1000000));
		}
		if (params.contains("-")) {
			String[] range = params.split("-");
			BigDecimal min = new BigDecimal(range[0]);
			BigDecimal max = new BigDecimal(range[1]);
			return RandomUtil.randomBigDecimal(min, max);
		}
		else {
			return RandomUtil.randomBigDecimal(new BigDecimal(params).add(BigDecimal.valueOf(0.01)));
		}
	}

	/**
	 * 随机生成中国大陆手机号
	 */
	public static String randomPhone() {
		// 常见手机号段
		String[] prefixes = { "133", "149", "153", "173", "177", "180", "181", "189", "199", "130", "131", "132", "145",
				"155", "156", "166", "175", "176", "185", "186", "134", "135", "136", "137", "138", "139", "147", "150",
				"151", "152", "157", "158", "159", "172", "178", "182", "183", "184", "187", "188", "198" };
		String prefix = prefixes[cn.hutool.core.util.RandomUtil.randomInt(prefixes.length)];
		return prefix + cn.hutool.core.util.RandomUtil.randomNumbers(8);
	}

	public static void main(String[] args) {
		int i = RandomUtil.randomInt(Integer.parseInt("18"));
		System.out.println(i);
	}

}
